/**
 * Bomb构造函数（模拟定时炸弹）
 * @param {string} name - 炸弹名称（用于区分不同炸弹）
 */
function Bomb(name) {
  this.name = name; // 炸弹名称
  this.timerId = null; // 定时器ID（用于取消定时器）
}

/**
 * start方法：启动定时器（3秒后爆炸）
 */
Bomb.prototype.start = function() {
  console.log(`[${this.name}] 已启动，3秒后爆炸！`);
  
  // 设置3秒定时器（1秒=1000毫秒）
  this.timerId = setTimeout(() => {
    console.log(`[${this.name}] 💥 爆炸！💥`);
  }, 3000);
};

/**
 * clear方法：取消定时器（阻止爆炸）
 */
Bomb.prototype.clear = function() {
  // 判断定时器是否存在（避免重复取消）
  if (this.timerId) {
    clearTimeout(this.timerId);
    this.timerId = null; // 清空定时器ID
    console.log(`[${this.name}] 已取消定时器，避免爆炸！`);
  } else {
    console.log(`[${this.name}] 没有正在运行的定时器，无需取消！`);
  }
};

// 主逻辑：实例化并测试炸弹
console.log('=== 定时炸弹模拟程序 ===');

// 1. 实例化两个炸弹对象
const b1 = new Bomb('炸弹1（b1）');
const b2 = new Bomb('炸弹2（b2）');

// 2. 启动两个炸弹
b1.start();
b2.start();

// 3. 1秒后取消b2的定时器
setTimeout(() => {
  console.log('\n--- 1秒后执行：取消b2的定时器 ---');
  b2.clear();
}, 1000);

// 补充：5秒后提示程序结束（确保所有定时器执行完成）
setTimeout(() => {
  console.log('\n=== 程序执行完成（5秒后自动退出） ===');
}, 5000);